[−][src]Crate commodity
A library with primatives representing commodities/money.
Optional Features
The commodity package has the following optional cargo features:
serde-support
- Disabled by default
- Enables support for serialization/de-serialization via
serde
Usage
This library revolves around the Commodity struct,
which stores a value using
rust_decimal::Decimal, and a
CurrencyCode which denotes the type of commodity.
Commodities with different currencies cannot interact with
mathematical operations such as add
, sub
, etc, this is checked
at runtime.
CurrencyCode designed to be used directly when when working with commodities, it is backed by a small fixed size array which supports the Copy trait, hopefully making it easier fast, lock-free concurrent code that deals with commodities.
Currency is designed to store useful user-facing information about the currency being referenced by the CurrencyCode, such as its full name/description.
use commodity::{Commodity, Currency, CurrencyCode}; use rust_decimal::Decimal; use std::str::FromStr; // Create a currency from its iso4317 three character code. // The currency stores information associated with the currency, // such as the full name ("United States dollar" for this one). let usd = Currency::from_alpha3("USD").unwrap(); // Create a commodity with a value of "2.02 USD" let commodity1 = Commodity::new(Decimal::from_str("2.02").unwrap(), &usd); // Create commodities using the `from_str` method let commodity2 = Commodity::from_str("24.00 USD").unwrap(); // Create commodity using a CurrencyCode let nzd_code = CurrencyCode::from_str("NZD").unwrap(); let commodity3 = Commodity::new(Decimal::from_str("24.00").unwrap(), nzd_code); // Add two compatible (same currency) commodities, the result has // the same currency (in this case, "USD"). let commodity4 = commodity1.add(&commodity2).unwrap(); // Try to subtract two incompatible commodities let result = commodity3.sub(&commodity2); assert!(result.is_err());
Modules
exchange_rate | Types and utilities relating to exchange rates and conversions between different types of commodities. |
Structs
Commodity | A commodity, which holds a value of a type of Currrency |
Currency | Represents a the type of currency held in a Commodity. See CurrencyCode for the primative which is genarally stored and used to refer to a given Currency. |
CurrencyCode | The code/id of a Currency. |
Enums
CommodityError | An error associated with functionality in the commodity module. |
Constants
CURRENCY_CODE_LENGTH | The length of the CurrencyCodeArray type, used to store the code/id for a given Currency in CurrencyCode. |
Functions
all_iso4217_currencies | Return a vector of all iso4217 currencies |